本文档面向 EOELAB 维护者,说明如何部署、接入和维护本地域、数据设施、认证设施、网络设施及联邦原生设施。账户注册、设备联网和设施使用参见《EOELAB 用户手册》,权限等级和授权设计参见《EOELAB 权限模型》。
DomainPrefix-Number,例如 core0-1swapoff -a 并永久移除 /etc/fstab 中的 swap 条目Incus 不再使用 TLS 客户端证书作为用户登录或本地域维护者的鉴权方式。所有用户通过联邦认证设施 Zitadel 使用 OIDC 登录,具体地址参见《EOELAB 服务端点》。Incus Web UI 作为公网管理入口,节点 SSH、实例 proxy 端口和其他节点直连入口只允许通过联邦网络访问。
OIDC 负责确认用户身份,OpenFGA 负责确认用户对 Incus 资源的访问权限。完成 OIDC 登录后,必须在 OpenFGA 中为用户或用户所属组配置关系元组,未配置授权关系的用户不会获得业务资源权限。
对象格式、角色继承、entitlement、最小权限和安全边界统一参见《EOELAB 权限模型》。关系元组的增删和查询在 fgaplane 中完成,具体地址参见《EOELAB 服务端点》。
默认不允许在 LXC 中嵌套运行 OCI 容器。容器部署服务可直接以 OCI 实例运行在 Incus 上,并使用 Incus 网络内部通信。例外:CI/CD 中使用 Kaniko 构建 OCI 镜像。
存储接口、数据保护策略和驱动选型遵循《EOELAB 互联云架构规范》RFC-0004。
DomainPrefix-nas,例如 core0-nas.eoelab 名称访问存储DomainPrefix-ceph-Number,超融合节点沿用 Incus 节点名称.eoelab 名称https://<INCUS_UI_PUBLIC_ENDPOINT>/oidc/callbackIncus 需要用户名而不是 sub 长数字序列,因此在 Zitadel 添加以下 Action:
function addUsername(ctx, api) {
api.v1.claims.setClaim("preferred_username", ctx.v1.getUser().preferredLoginName);
}
触发器设置为“自定义令牌 - Access Token 创建前”。admin 团队已完成全局配置,本地域维护者无需重复创建。
oidc.audience:留空或填写 Incus Web UI 公网 URLoidc.claim:preferred_usernameoidc.client.id:Zitadel Application IDoidc.issuer:Zitadel 公共 URLopenfga.api.token:OpenFGA 实例的 API Tokenopenfga.api.url:OpenFGA 实例 URLopenfga.store.id:OpenFGA Store ID使用 tailscale status 查看连接状态,使用 tailscale ping HOSTNAME.eoelab 验证实际路径。集群和存储节点经 DERP 中继时按降级状态处理。
.eoelab 节点寻址,再按批准的访问范围提供用户入口eoelab.org 域名和 Cloudflare Tunnel 路由http://localhost:PORT 或 http://HOSTNAME.eoelab:PORT,不配置源站 TLS.eoelab 名称和协议的非 TLS 模式,不配置服务端证书或客户端 TLS;例如 PostgreSQL 可设置 sslmode=disableINTERFACE-Domain172.16.0.0/12eth0;VM 需要 proxy 设备时可设置静态地址:eth0:
ipv4.address: 实例静态 IP
network: 接入网络
type: nic
listen 为外部端口,connect 为内部端口listen 绑定节点的 Tailscale 接口,访问端使用 HOSTNAME.eoelab;connect 的 IP 为实例静态 IPblock-host:丢弃主机地址段流量10.0.0.0/8192.168.0.0/16block-internal:丢弃内部地址段流量172.16.0.0/12用户按《EOELAB 用户手册》接入网络。维护者需要确认:
HOSTNAME.eoelab 名称收到退出申请后,admin 团队执行:
长期失联或存在安全风险的节点可以强制移除,但应保留操作记录。
HEADSCALE_ENDPOINT='<HEADSCALE_ENDPOINT>'
tailscale login --login-server "$HEADSCALE_ENDPOINT"
services:
derper:
image: ghcr.io/yangchuansheng/derper:v1.98.8
ports:
- 3478:3478/udp
- 12345:12345
environment:
DERP_DOMAIN: example.com
DERP_CERT_DIR: /cert
DERP_ADDR: ':12345'
DERP_STUN_PORT: '3478'
DERP_HTTP_PORT: '-1'
DERP_VERIFY_CLIENTS: "true"
volumes:
- ./cert:/cert
- /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock
chn(ISO 3166-1 三字母规范),区域名称使用国家全称不接受自签名节点,必须包含公共 CA 证书;中国大陆云服务器必须使用备案域名作为入口点。
forgejo 替换为申请人的用户名,避免同名 key 冲突monitor 并接入联邦网络osscluster=eoelab 和 replica=monitorDomainPrefix-Number 格式,独立存储节点使用对应的角色命名格式HOSTNAME.eoelab 配置集群<接口>_<介质><容量><性能>.eoelab HTTP 地址monitor 已接入联邦网络,并通过 .eoelab 名称采集目标